import instance, { AxiosError, type AxiosInstance, type AxiosResponse, type InternalAxiosRequestConfig } from 'axios'

import { ElMessage } from 'element-plus'
import { getToken } from "@/utils/utils";
import { useUserStore } from '@/stores';
// 创建实例时配置默认值
const service: AxiosInstance = instance.create({
	// 配置基地址
	baseURL: import.meta.env.HCWL_API_BASE_URL
});
// 添加请求拦截器
service.interceptors.request.use((config: InternalAxiosRequestConfig) => {
	if (getToken()) {
		config.headers.Authorization = getToken();
	}
	// 在发送请求之前做些什么
	return config;
}, function (error: AxiosError) {
	// 对请求错误做些什么
	return Promise.reject(error);
});
// 添加响应拦截器
service.interceptors.response.use((response: AxiosResponse) => {
	const store = useUserStore()
	const code = response.data.code
	const msg = response.data.msg
	// 对响应错误做点什么 
	if (code === 401) {
		ElMessage.error({
			message: '未登录，或登录失效，请登录',
			type: 'error',
			grouping: true
		})
		// 清除登录信息
		store.clearLogin()
	}
	else if (code !== 0 && code !== 2001) {
		ElMessage.error({
			message: msg,
			type: 'error',
			duration: 5000,
			grouping: true
		})
	}
	return response;
}, function (error: AxiosError) {
	ElMessage.error({
		message: "请求发生了错误！",
		type: 'error',
		grouping: true
	})
	return Promise.reject(error);
});




export default service
